/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladora;

import bean.Empresa;
import bean.Persona;
import bean.Usuario;
import java.util.ArrayList;
import resources.Data;
import servicios.ServicioEmpresa;
import servicios.ServicioPersonaNatural;
import servicios.ServicioUsuario;
import util.StringUtils;

/**
 *
 * @author Stuk4
 */
public class ControlAsociados {

    ServicioPersonaNatural servicioPersonaNatural = new ServicioPersonaNatural();
    ServicioUsuario servicioUsuario = new ServicioUsuario();
    ServicioEmpresa servicioEmpresa = new ServicioEmpresa();


    /**
     * Consulta los dni creados, y retorna los dni asociados al usuario logueado.
     * @return lista de dnis asaciados por el usuario logueado
     */
    public Object listarDNI() {
        
        Usuario usuario = Data.usuarioLogueado;
        ArrayList<Persona> listaPersonas = null;
        if (usuario != null) {
            listaPersonas = servicioPersonaNatural.listar(usuario);
        }
        return listaPersonas;
    }

    /**
     * Lista las empresas asigadas al usuario Logueado
     * @return
     */
    public Object listarEmpresa(){
        

        Usuario usuario = Data.usuarioLogueado;
        ArrayList<Empresa> listaEmpresas = null;
        if (usuario != null) {
            listaEmpresas = servicioEmpresa.listar(usuario);
        }
        return listaEmpresas;
    }

    public void modificarDNI(String emailUsuario, int tipoDoc, String dni, String nombre, String apPaterno, String apMaterno, String direccion) {

        Usuario user = servicioUsuario.obtenerUsuarioPorEmail(emailUsuario);
        Persona p_Aux = (Persona) servicioPersonaNatural.obtenerPorDoc(dni, user);

        if (p_Aux != null) {
            if (StringUtils.esStringValido(nombre)) {
                if (StringUtils.esStringValido(apMaterno)) {
                    if (StringUtils.esStringValido(apPaterno)) {
                        if (StringUtils.esStringValido(direccion)) {
                            if (tipoDoc == 1) {
                                if (StringUtils.esStringValido(dni, 8, 8)) {
                                    Persona p = new Persona(nombre, apPaterno, apMaterno, tipoDoc, dni, direccion);
                                    p.setUserAsociado(user);
                                    servicioPersonaNatural.modifical(p);
                                }
                            } else {
                                System.out.println("dni");
                            }
                        } else {
                            System.out.println("direccion");
                        }

                    } else {
                        System.out.println("paterno");
                    }
                } else {
                    System.out.println("materno");
                }
            } else {
                System.out.println("nombre");
            }
        } else {
            System.out.println("Error");
        }




    }

    public void eliminarDNI(String dni, Usuario usuario) {

        Persona p = (Persona) servicioPersonaNatural.obtenerPorDoc(dni, usuario);
        servicioPersonaNatural.eliminar(p);

    }

    public void registrarDNI(String emailUsuario, int tipoDoc, String dni, String nombre, String apPaterno, String apMaterno, String direccion) {


        Usuario user = servicioUsuario.obtenerUsuarioPorEmail(emailUsuario);
        Persona p_Aux = null;
        try {
            p_Aux = (Persona) servicioPersonaNatural.obtenerPorDoc(dni, user);
        } catch (Exception e) {
        }

        if (p_Aux == null) {
            if (StringUtils.esStringValido(nombre)) {
                if (StringUtils.esStringValido(apMaterno)) {
                    if (StringUtils.esStringValido(apPaterno)) {
                        if (StringUtils.esStringValido(direccion)) {
                            if (tipoDoc == 1) {
                                if (StringUtils.esStringValido(dni, 8, 8)) {
                                    Persona p = new Persona(nombre, apPaterno, apMaterno, tipoDoc, dni, direccion);
                                    if (user != null) {
                                        p.setUserAsociado(user);
                                        servicioPersonaNatural.registrar(p);
                                    } else {
                                        System.out.println("Usuario");
                                    }
                                }
                            } else {
                                System.out.println("dni");
                            }
                        } else {
                            System.out.println("direccion");
                        }
                    } else {
                        System.out.println("paterno");
                    }
                } else {
                    System.out.println("materno");
                }
            } else {
                System.out.println("nombre");
            }
        } else {
            System.out.println("DNI Ya registrado");
        }


    }

    public void registrarEmpresa(String emailUsuario, int idTipoDoc, String ruc, String direccion, String razonSocial) {

        Usuario user = servicioUsuario.obtenerUsuarioPorEmail(emailUsuario);
        Empresa emp_aux = null;

        try {
            emp_aux = (Empresa) servicioEmpresa.obtenerPorDoc(ruc, user);
        } catch (Exception e) {
        }

        if (emp_aux == null) {
            if (user != null) {
                if (idTipoDoc == 2) {
                    if (StringUtils.esStringValido(ruc, 11, 11)) { //validamos RUC
                        if (StringUtils.esStringValido(direccion)) {
                            emp_aux = new Empresa(razonSocial, idTipoDoc, ruc, direccion, user);
                            servicioEmpresa.registrar(emp_aux);
                        }
                    }
                } else {
                    //No es RUC
                }
            }//No existe usuario
        }
    }

    public void modificarEmpresa(String emailUsuario, int idTipoDoc, String ruc, String direccion, String razonSocial) {
        Usuario user = servicioUsuario.obtenerUsuarioPorEmail(emailUsuario);

        Empresa emp_aux = null;
        try {
            emp_aux = (Empresa) servicioEmpresa.obtenerPorDoc(ruc, user);
        } catch (Exception e) {
        }



        if (emp_aux != null) {
            if (user != null) {
                if (idTipoDoc == 2) {
                    if (StringUtils.esStringValido(ruc, 11, 11)) { //validamos RUC
                        if (StringUtils.esStringValido(direccion)) {

                            emp_aux = new Empresa(razonSocial, idTipoDoc, ruc, direccion, user);
                            servicioEmpresa.modifical(emp_aux);
                        }
                    }
                } else {
                    //No es RUC
                    System.out.println("error ruc");
                }
            }//No existe usuario
            else {
                System.out.println("user = null");
            }

        } else {
            System.out.println("existe = null");
        }
    }

    public void eliminarEmpresa(String ruc, Usuario usuario) {

        Empresa emp = (Empresa) servicioEmpresa.obtenerPorDoc(ruc, usuario);
        servicioEmpresa.eliminar(emp);
    }

    public ArrayList<Persona> listaDNIAsociadasPorUsuario(Usuario user) {
        return null;
    }
}
